// 导入数据库操作模块
const db = require('../db/index')
const bcrypt = require('bcryptjs')

// 获取用户基本信息的路由处理函数
exports.getUserInfo = (req, res) => {
    // 查询语句
    const selectStr = 'select id, username, nickname, email, user_pic from ev_users where id=?'
    // 执行SQL语句
    // req对象上的 user 属性，是 Token 解析成功，express-jwt 中间件自动挂载上去的 
    db.query(selectStr,req.user.id,(err,results)=>{
        // sql执行失败
        if(err) return res.cc(err)
        // 查询为空
        if(results.length !== 1) return res.cc('查询数据为空')
        // 获取成功 相应数据
        res.send({
            status:0,
            message:'成功',
            data:results[0]//用户信息
        })
    })
}
// 修改用户基本信息
exports.upUserInfo =(req,res)=>{
    // 更新sql语句
    const upStr  = 'update ev_users set ? where id=?'
    db.query(upStr,[req.body,req.body.id],(err,results)=>{
        // sql执行失败
        if(err) return res.cc(err)
        // 影响行数为空
        if(results.affectedRows !== 1) return res.cc('修改失败')
        // 修改成功
        res.cc('修改成功',0)
    })
}
// 修改用户密码
exports.upPassword=(req,res)=>{
    // 查询是否有该用户
    selectStr = 'select * from ev_users where id=?'
    db.query(selectStr,req.user.id,(err,results)=>{
        if(err) return res.cc(err)
        // 判断是否有改id
        if(results.length !== 1) return res.cc('不存在该用户')

        // 判断旧密码是否正确
        const compareResult = bcrypt.compareSync(req.body.oldPwd,results[0].password)
        if(!compareResult) return res.cc('旧密码错误')

        // 更新密码
        upStr = 'update ev_users set password=? where id=?'
        const newPwd = bcrypt.hashSync(req.body.newPwd,10)
        db.query(upStr,[newPwd,req.user.id],(err,results)=>{
            // sql语句错误
            if(err) return res.cc(err)
            // 影响行数为零
            if(results.affectedRows !==1) return res.cc('更新密码失败')
            // 更新成功
            res.cc('更新密码成功',0)
        })
    })
}  
// 更新用户头像
exports.upAvatar=(req,res)=>{
    // sql语句
    const upStr = 'update ev_users set user_pic=? where id=?'
    db.query(upStr,[req.body.avatar,req.user.id],(err,results)=>{
        if(err) return res.cc('执行sql失败')
        if(results.affectedRows !== 1) return res.cc('更换头像失败')
        //成功
        res.cc('头像更新成功',0)
    })
}